<template>
  <div class="student">
    <h2>学生姓名：{{ name }}</h2>
    <h2>学生性别：{{ sex }}</h2>
    <h2>当前求和：{{ number }}</h2>
    <button @click="add">点我number++</button>
    <hr />
    <button @click="sendStudentName">将学生名传递给App组件并输出</button>
    <button @click="unbind">解绑atguigu事件</button>
    <button @click="throwStudent">销毁Student组件的实例VC</button>
  </div>
</template>

<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Student",
  data() {
    return {
      name: "张三",
      sex: "男",
      number: 0,
    };
  },
  methods: {
    add() {
      console.log("add回调被调用了");
      this.number++;
    },
    sendStudentName() {
      //通过this获取到组件VC实例，通过emit触发组件实例身上的事件！
      //后面可以跟很多参数，与父组件回调保持一致即可
      this.$emit("atguigu", this.name, 666, 888, 999);
      //this.$emit("demo");
    },
    unbind() {
      //1：解绑一个自定义事件（绑定到谁身上就找谁处理，找VC）
      this.$off("atguigu");

      //2：解绑多个事件，需封装为一个数组传递
      //this.$off(["atguigu","demo"]);

      //3：解绑所有的自定义事件
      //this.$off();
    },
    throwStudent() {
      //4：销毁当前Student组件的实例，销毁后所有Student实例的自定义事件全部失效
      this.$destroy();
    },
  },
};
</script>

<style scoped>
.student {
  background-color: orange;
  padding: 5px;
  margin-top: 30px;
}
</style>